function* fib(max) {
    var t, a = 0, b = 1, n = 1;
    while (n < max) {
        yield a;
        t = a + b; a = b; b = t; n ++;
    }
    return a;
}
var f = fib(5); console.log(f);  // 直接调用一个 generator 和调用函数不一样, fib(5) 仅仅是创建了一个 generator 对象, 还没有去执行它
console.log(f.next(), f.next());  // {value: 0, done: false}, {value: 1, done: false}, 如果 done 为 true, 表示已经循环结束了
for (var x of fib(5)) { console.log(x); }  // 依次输出0, 1, 1, 2
